package Custom;

use Digest::MD5 qw(md5_hex);
use utf8;

require Model::Presence_config_for_bot;

sub new {
	bless {}, shift;
}

sub reply {
	my $self=shift;
	main::reply( @_ );
}

sub presenceAll {
	my $self=shift;
	main::presenceAll( @_ );
}

sub on_message {
	my $self=shift;
	my ($sid,$mes) = @_;
	my $sender=$mes->GetFrom('jid')->GetJID('base');

	my $body=$mes->GetBody();

	#защита от уведомлений "пользователь печатает..." и прочих
	length($body) or return;

	my $thread=$mes->GetThread();

	my $c=Model::Presence_config_for_bot->new;

	my $reply='';

	if ( !$c->where(jid => $sender)->load ) {
		$reply= 'Вы ещё не добавили меня в список!';
		;
	} elsif ($body=~/^\s*1\s*$/) {
		$c->set( enable => 1 )->update();
		$self->presenceAll(
			to => $mes->GetFrom,
			status => 'Статус отображается',
		);
		$reply= 'Отображение статуса включено!'
		;
	} elsif ($body=~/^\s*2\s*$/) {
		$c->set( enable => 2 )->update();
		$self->presenceAll(
			to => $mes->GetFrom,
			status => 'Статус отображается + ajax',
		);
		$reply= 'Отображение статуса включено! + ajax'
		;
	} elsif ($body=~/^\s*0\s*$/) {
		$c->set( enable => 0 )->update();
		$self->presenceAll(
			to => $mes->GetFrom,
			status => 'Отображение статуса отключено',
		);
		$reply= 'Отображение статуса отключено!'
		;
	} elsif ($body=~/^\s*config\s*$/i) {
		$reply=
			"\n*** Текущие параметры $sender ***"
			. "\nОтображение статуса: " . ( $c->get(q/enable/) ? 'вкл.' : 'выкл.')
			. "\nПуть до изображений: " . $c->get(q/img_path/)
			. "\nhtml-строка: " . $c->get(q/js_str/)
			. "\nТема: " . $c->get(q/theme/)
		;
	} elsif ($body=~/^\s*(help|помощь)\s*$/i) {
		( my $sender_for_url = $c->get('jid') ) =~s/\@/%40/g;
		$reply=
			"\n*** URL, которые Вы можете использовать  ***"
			. "\nИконка-статус http://web-apps.ru:11000/jabber-presence/img/jid/" . $sender_for_url . '/'
			. "\nИконка-статус http://web-apps.ru:11000/jabber-presence/img/xid/".md5_hex( $c->get('jid') ) . '/'
			. "\nhtml-строка http://web-apps.ru/jabber-presence/html/jid/" . $sender_for_url . '/'
			. "\nhtml-строка http://web-apps.ru/jabber-presence/html/xid/" . md5_hex( $c->get('jid') ) . '/'
			. "\n\n*** Помощь по командам ***"
			. "\nconfig - отображение текущих параметров"
			. "\nreset - установка всех настроек по умолчанию"
			. "\nbotstat - статистика работы ботa"
			. "\nset html=<...> - установка html-строки"
			. "\n0 - отключить отображение текущего статуса (будет показываться статус unknown)"
			. "\n1 - включение отображения статуса"
		;
	} elsif ($body=~/^\s*reset\s*$/i) {
		$c->reset_conf->save();
		$reply= 'Настройки сброшены!'
		;
	} elsif ($body=~/^\s*set\s+(\w+)=(.*)/) {
		if ($1 eq 'theme') {
			$c->set( theme => $2 )->save()
		} elsif ($1 eq 'html') {
			$c->set( js_str => $2 )->save()
		} elsif ($1 eq 'showall') {
			$c->set( enable => $2 ? 2 : 1 )->save()
		}
		$reply= "OK"
		;
	} elsif ($body=~/^\s*botstat\s*/i) {
		$reply = qq/\nВ сети с (по Москве) : "/ . (scalar localtime $startTime) . qq/"/
			. "\nКоличество контактов, включивших отображение статуса: " . $c->where(enable => 1)->count()
			. "\nВерсия бота: " . $VERSION
		;
	} else {
		$reply='"help" для помощи...'
	}

	$self->reply(
		sender => $mes->GetFrom,
		message => $reply,
		thread => $thread
	);
}

1;
